package com.transaction.demo.notify;

import javax.validation.Valid;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.transaction.demo.common.util.Result;
import com.transaction.demo.common.util.ResultPage;
import com.transaction.demo.notify.vo.req.NotifyRecordAddReqVo;
import com.transaction.demo.notify.vo.req.NotifyRecordListReqVo;
import com.transaction.demo.notify.vo.req.NotifyRecordReqVo;
import com.transaction.demo.notify.vo.req.NotifyRecordUpdateReqVo;
import com.transaction.demo.notify.vo.resp.NotifyRecordRespVo;

@FeignClient(value = "demo-notify-provider", fallback = NotifyServiceHystrix.class)
public interface NotifyService {

	/**
	 * 查询通知记录表 RP_NOTIFY_RECORD
	 *
	 * @param record 请求参数
	 * @return NotifyRecordResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:18:42
	 */
	@PostMapping("/queryNotifyRecord")
	NotifyRecordRespVo query(@RequestBody @Valid NotifyRecordReqVo record);

	/**
	 * 查询通知记录表 RP_NOTIFY_RECORD列表
	 *
	 * @param record 请求参数
	 * @return NotifyRecordResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:18:42
	 */
	@PostMapping("/queryNotifyRecordList")
	Result<ResultPage<NotifyRecordRespVo>> queryNotifyRecordList(@RequestBody @Valid NotifyRecordListReqVo record);

	/**
	 * 添加通知记录表 RP_NOTIFY_RECORD
	 *
	 * @param record 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:18:42
	 */
	@PostMapping("/saveNotifyRecord")
	Result<Integer> saveNotifyRecord(@RequestBody @Valid NotifyRecordAddReqVo record);

	/**
	 * 删除通知记录表 RP_NOTIFY_RECORD
	 *
	 * @param ids 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:18:42
	 */
	@PostMapping("/deleteNotifyRecord")
	Result<Integer> deleteNotifyRecord(String ids);

	/**
	 * 更新通知记录表 RP_NOTIFY_RECORD
	 *
	 * @param record 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:18:42
	 */
	@PostMapping("/updateNotifyRecord")
	Result<Integer> updateNotifyRecord(@RequestBody @Valid NotifyRecordUpdateReqVo record);
}
